import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

# 设置中文字体和负号显示
plt.rcParams['font.sans-serif'] = ['SimSun']  # 设置中文显示为宋体
plt.rcParams['font.serif'] = ['Times New Roman'] # 设置英文字体为新罗马
plt.rcParams['font.family'] = ['sans-serif', 'serif'] # 优先使用sans-serif，如果字符不在其中，则使用serif
plt.rcParams['axes.unicode_minus'] = False  # 解决负号显示问题

# 创建时间轴
total_time = 29  # 总时间(s)
t = np.linspace(0, total_time, 1000)  # 生成1000个时间点

# 工况1：流速从0.1m/s增加到5.0m/s
def condition1(t):
    if t < 4:
        return 0.1  # 0-4s稳定在0.1m/s
    elif 4 <= t <= 20:
        return 0.1 + (5.0 - 0.1) * (t - 4) / 16  # 4-20s线性增加
    else:
        return 5.0  # 20-29s稳定在5.0m/s

# 工况2：流速从5.0m/s减少到0.1m/s
def condition2(t):
    if t < 4:
        return 5.0  # 0-4s稳定在5.0m/s
    elif 4 <= t <= 20:
        return 5.0 - (5.0 - 0.1) * (t - 4) / 16  # 4-20s线性减少
    else:
        return 0.1  # 20-29s稳定在0.1m/s

# 计算流速值
v1 = np.array([condition1(ti) for ti in t])
v2 = np.array([condition2(ti) for ti in t])

# 将数据保存到CSV文件
output_df = pd.DataFrame({'时间 (s)': t, '工况1流速 (m/s)': v1, '工况2流速 (m/s)': v2})
output_csv_path = 'flow_conditions.csv'
output_df.to_csv(output_csv_path, index=False, encoding='utf-8')
print(f"流速数据已保存至: {output_csv_path}")

# 绘制图形
plt.figure(figsize=(10, 6))
plt.plot(t, v1, label='工况1: 流速升高')
plt.plot(t, v2, label='工况2: 流速降低')

# 添加标题和标签
plt.title('流速随时间变化曲线', fontsize=14)
plt.xlabel('时间 (s)', fontsize=16)
plt.ylabel('流速 (m/s)', fontsize=16)

# 添加网格和图例
plt.grid(True, linestyle='--', alpha=0.6)
plt.legend(fontsize=12)

# 设置坐标轴范围
plt.xlim(0, total_time)
plt.ylim(0, 5.5)

# 显示图形
plt.tight_layout()
plt.show()
